home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-13 / amac44b.zip / PAUSE15.QM < prev    next >
Text File  |  1992-06-22  |  27KB  |  567 lines

  1. *                             PAUSE15.QM
  2. *                      Macros To Single Step Macros
  3. *                        Written by Tom Hogshead
  4. *                   With Contributions by John Goodman
  5. *                                 6/22/92
  6. *  Key    Subfile               Description
  7. * =====  =========    =====================================================
  8. *  @1               - Make Macro a Single Step Macro by Block ( )         |chg
  9. *  @2               - Revert a Single Step Macro, Remove Pause Lines      |chg
  10. *  @3               - Single Step or Revert a Single Step Macro by Line   |chg
  11. *                     or Block
  12. *  @4               - Comment or Un-comment All PAUSE*+'s in Block        |new
  13. *  @9               - Macro @2 Paused with @1                             |chg
  14. *
  15. *  @6  {e:\up\mis005} Make Single Column Macro of QMAC Output
  16. *  @7  {e:\up\mis005} Make Single Column Macro, User Controlled
  17. *  @8  {e:\up\mis005} Make Single Column Macro
  18. *  @9  {e:\up\mis005} Convert Single Column Macro to Wide, User Controlled
  19. *  @0  {e:\up\mis005} Convert Single Column Macro to Wide, Automatic
  20. *  @j  {e:\up\mis005} Join Lines with Single Space at Join Point
  21. *
  22. *                     Description
  23. *                     AMACxx.ZIP
  24. *                     Version History
  25. *
  26. *-- eoi
  27.  
  28. * (DESCRIPTION): These macros make a portion of a QEdit macro a 'single
  29. * step' macro by entering a  'pause' before lines.  Macros are included
  30. * to revert a  single step macro  to normal macro operation.  Macros in
  31. * AMACxx.ZIP mis005.qm make macros single column macros to debug macros
  32. * with these macros.  Macros require QEdit v2.15.
  33.  
  34. * (AMACxx).ZIP: AMACxx.ZIP is  a collection of QEdit  macros I have put
  35. * together.  Most macros  I have written,  and John Goodman contributed
  36. * extensively to this effort.
  37.  
  38.  
  39.  
  40.  
  41. *                          M A C R O S
  42. * ----------------------------------------------------------------------
  43. * @(1) Single Step a Macro By Inserting PAUSE*+ Lines
  44. * ----------------------------------------------------------------------
  45. * This macro converts any  portion of a macro  marked as a block into a
  46. * 'single step' macro by inserting a 'pause'  before each macro command
  47. * in the block.  To run, place the cursor line on the first line of the
  48. * block,  execute the  macro,  and at  the  pause, cursor  down  to the
  49. * desired end of block and hit Enter.   Alternatively, the block may be
  50. * marked (open or closed) before execution as any type block.
  51.  
  52. * The macro stops when the cursor reaches and deletes first blank line.
  53.  
  54. * The following lines are not paused by @1:
  55. *       a)  Lines containing any case 'pause' if no  text  exists after
  56. *           the pause on the same line.
  57. *       b)  Lines containing PAUSE*+ or pause*+ inserted with @1 or @3.
  58. *       c)  Lines containing ' jt' or ' jf' as first char in line.
  59. *           Conditional  statement  labels  may be on the
  60. *           same or next line with or without a succeeding colon.
  61. *       d)  Lines containing a colon  if no text exists after the colon
  62. *           on the same line.  Are assumed to be Labels.
  63. *       e)  Lines containing a '*' as first character in line.
  64. *       f)  Lines containing repeatcmd.
  65.  
  66. * This macro requires QEdit v2.15.
  67.  
  68. @1  macrobegin
  69.     setwordwrapmode togglewordwrap
  70.     setsoundoff                                                            *|
  71.     * ---------- Finish Marking Line Or Block If Not Marked ---------*
  72.         gotoblockend jtrue OK       * If closed, go to OK
  73.         markline                    * If not closed, close or start mark
  74.         gotoblockend jtrue OK       * If block is now closed, started open
  75.         makectrofscreen
  76.         Pause
  77.         markline                    * Mark end of block
  78.     OK:
  79.         setscreenoff                * Turn screen off
  80.         addline                     * Insert blank line under block
  81.         linedown
  82.         gotoblockbeg                * Pos at start of block
  83.     LOOP:
  84.         unmarkblock                                                      *:18
  85.         * setscreenon setscreenoff  * Add line to see action!            *:18
  86.     * ------- Test If at End of Block or Started on Blank Line ------*
  87.         isemptyline
  88.     jtrue 3A                        * Cursor to first black line           *|
  89.     * ----------- Test If Star Is First Character In Line -----------*
  90.         firstnonwhite               * Pos on first char
  91.         markcolumn                                                       *:18
  92.         cursorright                 * Move right one space off first char  *|
  93.         find '*' return "LB" return * Search for star in block             *|
  94.     jtrue 1                         * If true, line commented, bypass
  95.     * ------------------- Test If Label With Colon ------------------*
  96.         markline                    * Re-mark line                         *|
  97.         endline                                                          *:18
  98.         find ':' return "LB" return * Search for colon in this line only *:15
  99.     jfalse NOCOLON                  * If no colon, go to NOCOLON
  100.         cursorright                 *ELSE colon found, move right off char
  101.         isendline                   * Test if text after colon
  102.     Jtrue 1                         * If none, line assumed to be a cond.
  103.                                     * statement or Label, bypass
  104.     * --------- Test If Jtrue Statement Label Without Colon ---------*
  105.     NOCOLON:
  106.         begline
  107.         find                        * Search for word beginning with j_t
  108.         "j" "t"  return "IL" return *  in this line only
  109.     jtrue CONDITIONAL               * Test if 'j' is first char in line    *|
  110.     * --------- Test If Jfalse Statement Label Without Colon --------*
  111.         begline
  112.         find                        * Search for word beginning with j_f
  113.         "j" "f" return "IL" return  *  in this line only
  114.     jfalse NEXT1                    * If not found, move to next test      *|
  115.     CONDITIONAL:                                                           *|
  116.         firstnonwhite                                                      *|
  117.     jtrue 3                         * If 'j' is first char in line, pause  *|
  118.     jump 1                          *ELSE cursor down to next line to test *|
  119.     * ------------ Test If Line Is Already Paused With @1 -----------*
  120.     NEXT1:                                                                 *|
  121.         begline
  122.         find                        * Test if line is already paused with @1
  123.         "E" "*+" return "IL" return * Finds 'PAUSE_*+', any case
  124.     jtrue 2                         * If found, line was paused with @1,
  125.                                     * bypass this and next line
  126.     * --------- Test If Line Is Already A 'Pause', Any Case ---------*
  127.         begline
  128.         find                        * Test if line has 'pause' in it       *|
  129.         "pause" return "WLI"  return                                       *|
  130.     jfalse NO_PAUSE                 * If false, line has no 'pause' in it  *|
  131.         markword gotoblockend                                              *|
  132.         isendline                                                          *|
  133.     jtrue 2                         * Test if 'pause' has text after it,   *|
  134.                                     * If so, bypass this and next line     *|
  135.     * ----------------- Test If Line Has Repeat_cmd -----------------*
  136.     NO_PAUSE:                                                              *|
  137.         markline                    * Re-mark line
  138.         begline
  139.         find                        * Test for Repeat_Cmd
  140.         "a" "tcm"  return "IL" return
  141.     Jtrue 1                         * If  found, bypass this line
  142.     * ----------------------- Insert PAUSE_*+ -----------------------*
  143.     3:  insertline                  * Insert blank line for 'pause'
  144.     3A: gotocolumn "25" return                                             *|
  145.         "PAUSE" #42 "+"             * Insert Pause
  146.         * unmarkblock               * Add these two lines to             *:18
  147.         * setscreenon setscreeonff  * see the action!                    *:18
  148.     2:  cursordown                  * Bypass line, move down to next line
  149.     1:  cursordown                  * Move down to next line to test if blank
  150.         isemptyline
  151.     jfalse LOOP                     * LOOP again 'til blank line
  152.     END:
  153.         unmarkblock togglewordwrap
  154. *
  155. * 241 bytes Wed  05-29-1991  21:20:35 (TH to JG)
  156. * 207 bytes Tue  06-04-1991  00:39:02 (TH implemented JG suggestions)
  157. * 194 bytes Tue  06-04-1991  10:38:13 (TH shortened test for comments)
  158. * 194 bytes Sun  06-23-1991  20:59:30 (TH changed find first char on line)
  159. * 194 bytes Mon  07-08-1991  17:16:28 (TH @1)
  160. * 196 bytes Fri  08-09-1991  02:01:44 (TH @1, Ins Off OK)
  161. * 238 bytes Tue  11-12-1991  13:50:43 (TH @1, for conditional w/o colon's)
  162. * 241 bytes Thu  11-14-1991  02:05:26 (TH @1, for v2.15, #3/776)
  163. * 222 bytes Thu  02-13-1992  16:18:53 (TH @1, for all qconfig's)
  164. * 168 bytes Wed  05-20-1992  08:30:03 (TH @1, shortened, in Amac43.zip)
  165. *               (In Amac43.zip)
  166. * 193 bytes Mon  06-08-1992  10:57:21 (TH @1, not pause any case 'pause' *|)
  167. * 193 bytes Mon  06-08-1992  10:57:21 (TH @1 to ALL #3/859-61)
  168. * 200 bytes Mon  06-15-1992  17:57:11 (TH @1, changed colon routine)
  169. * 194 bytes Thu  06-18-1992  23:02:30 (TH @1, shortened)
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177. * 
  178. * ----------------------------------------------------------------------
  179. * @(2) Remove PAUSE*+ Lines Inserted With @1, Reverts to Normal Operation
  180. * ----------------------------------------------------------------------
  181. * This macro removes all and only pauses placed with @1 from the cursor
  182. * line to the next blank line.   If no PAUSE_*+ is found after starting
  183. * this macro, the macro deletes the next blank line it finds and stops.
  184. * Just beware.
  185.  
  186. @2  macrobegin
  187.     setscreenoff setsoundoff                                               *|
  188.     LOOP:
  189.         unmarkblock
  190.         * setscreenon setscreenoff  * Add line to see action!            *:18
  191.         markline                    * Markline for Find
  192.         Find
  193.             "E" "*+" return         * Search for 'PAUSE_*+'
  194.             "IL" return             * Finish prompt                        *|
  195.     jfalse NOPAUSE                  * If not found, go to NOPAUSE
  196.         delline                     *ELSE if found, delete pause line
  197.         begline                     * Re-position for Find in current line
  198.     jump LOOP                       * Loop again
  199.     NOPAUSE:
  200.         endline begline             * Test if line has text
  201.     jfalse DELLINE                  * If blank, delete line and end macro
  202.         cursordown                  * Cursor down to next line
  203.     jfalse END                      * If false, at eof, end macro
  204.     jump LOOP                       * Loop again 'til blank
  205.     DELLINE:
  206.         delline                     * Delete blank line
  207.     END:
  208.         unmarkblock
  209. *
  210. * 36 bytes Tue  06-04-1991  00:26:13 (TH)
  211. * 44 bytes Tue  06-04-1991  10:14:23 (TH |)
  212. * 45 bytes Mon  07-08-1991  17:16:43 (TH @2)
  213. * 46 bytes Tue  11-12-1991  15:10:11 (TH @2, use v2.15)
  214. * 45 bytes Tue  11-12-1991  15:26:16 (TH @2, w/o v2.15, #3/776)
  215. * 46 bytes Tue  05-19-1992  23:26:19 (TH @2, added setscreenoff)
  216. *               (In Amac43.zip)
  217. * 41 bytes Fri  06-05-1992  13:39:05 (TH @2, shortened, added setsoundoff)
  218. * 43 bytes Mon  06-08-1992  08:30:37 (TH @2, changed find to 'IL')
  219. * 43 bytes Mon  06-08-1992  08:30:37 (TH @2 to ALL #3/859-61)
  220.  
  221.  
  222.  
  223.  
  224. * 
  225. * ----------------------------------------------------------------------
  226. * @(3) Single Step or Revert a Single Step Macro by Line or Block
  227. * ----------------------------------------------------------------------
  228. * This  macro either  adds  a PAUSE*+  line  above the  cursor  line, or
  229. * comments/un-comments a PAUSE*+  line on either the  cursor line or the
  230. * line  above  the  cursor  line.  If  a  line  block  is  marked before
  231. * invoking, either open  or closed, all  lines in the  block are paused,
  232. * un-paused, or bypassed as if  separately.  Lines that have been paused
  233. * or un-paused with @3 are not paused  or paused, the same as if @1 were
  234. * invoked.  See @1  discussion for what lines  are *not* paused with @3.
  235.  
  236. * Lines that have  already been paused, un-paused  or commented out with
  237. * @1 or @3, are handled by @3 as follows:
  238.  
  239. *     a.  PAUSED: If the  cursor line or the  line above the cursor line
  240. *         has already been paused with @1  or @3 when @3 is invoked, the
  241. *         paused line  will be commented  out (un-paused) by inserting a
  242. *         preceding  asterisk  and  the pause  will  be  lower  cased to
  243. *         'pause*+'.
  244.  
  245. *     b.  PAUSED and COMMENTED:  If the  cursor line, or  the line above
  246. *         the cursor  line, has  already been paused  with @1  or @3 and
  247. *         the  paused line  has been  *commented  out* with  a preceding
  248. *         asterisk,  the  commented  paused  line  will  be un-commented
  249. *         and  the 'pause*+' re-capitalized  to 'PAUSE*+' to  highlight.
  250.  
  251. *     c.  REMOVING LINES CONTAINING 'PAUSE*+': Pause lines inserted with
  252. *         @3 may be removed with @2  by inserting a blank line after the
  253. *         last pause to be removed and  then invoking @2 at or above the
  254. *         first paused line to be removed.
  255.  
  256. @3  macrobegin
  257.     setscreenoff
  258.     setwordwrapmode togglewordwrap
  259.     setsoundoff setinsmode
  260.     * --------- Close Block if Not Marked, Insert Eob Marker --------*
  261.         nextfile                            * Maintain screen pos cur file
  262.         horizontalwindow
  263.         editfile escape                     * For all Qconfig's
  264.         nextfile
  265.         closewindow prevfile                * Closes block if open
  266.         gotoblockend
  267.     jfalse NO_ADDLINE
  268.         addline begline #173 #175           * Insert end of block markers*:15
  269.         lineup                              * Re-position cursor
  270.         gotoblockbeg
  271.     NO_ADDLINE:
  272.         isemptyline
  273.     jtrue 3A
  274.     LOOP:
  275.     * ----------- Test if Star is First Character in Line -----------*
  276.         firstnonwhite
  277.         unmarkblock                                                      *:18
  278.         * setscreenon setscreenoff          * Add line to see action!    *:18
  279.         markcolumn                                                       *:18
  280.         endline markcolumn                                               *:18
  281.         firstnonwhite                                                    *:18
  282.         cursorright                         * Move one char rt of first char
  283.         find '*' return "LB" return         * Test if line is commented
  284.     jfalse NO_STAR
  285.         find "E" "*+" return "IL" return    * If commented, test if paused
  286.     jfalse 1
  287.         shiftleft shiftright                * Uncomment if paused
  288.         markword upper                      * Upper case it for visibility
  289.         cursordown
  290.     jump 1
  291.     NO_STAR:
  292.     * ------------------- Test if Label with Colon ------------------*
  293.         unmarkblock markline                                             *:18
  294.         endline                                                          *:18
  295.         find ':' return "ILB" return     * Search for colon in line only *:15
  296.         jfalse NOCOLON
  297.         cursorright
  298.         isendline
  299.     Jtrue 1                                 * Bypass if text after colon
  300.     NOCOLON:
  301.     * --------- Test if Jtrue Statement Label without Colon ---------*
  302.         begline
  303.         find "j" "t"  return "IL" return
  304.     jtrue CONDITIONAL
  305.     * --------- Test if Jfalse Statement Label without Colon --------*
  306.         begline
  307.         find "j" "f" return "IL" return
  308.     jfalse NEXT1
  309.     CONDITIONAL:
  310.         firstnonwhite
  311.     jtrue 3                                 * Pause if 'j' not first char
  312.     jump 1                                  *ELSE don't 'Pause'
  313.     NEXT1:
  314.     * ----------------- Test if Line has Repeat_Cmd -----------------*
  315.         begline
  316.         find "a" "tcm" return "IL" return
  317.     jtrue 1
  318.     * --------- Test if Line or Line Above is Already Paused --------*
  319.         begline
  320.         find "E" "*+" return "IL" return    * Test if PAUSE_*+
  321.     jtrue IS_PAUSE
  322.         cursorup                            * Pos to test line above
  323.         unmarkblock markline
  324.         repeatfind
  325.     jtrue IS_PAUSE
  326.         cursordown                          * Return to starting line
  327.     jump LAST_TEST
  328.     IS_PAUSE:
  329.         firstnonwhite                                                    *:18
  330.         unmarkblock markcolumn                                           *:18
  331.         endline markcolumn                                               *:18
  332.         firstnonwhite                                                    *:18
  333.         cursorright
  334.         find '*' return "LB" return         * Test if PAUSE_*+ is commented
  335.     jfalse COMMENT
  336.     UNCOMMENT:
  337.         shiftleft shiftright                * Uncomment if commented
  338.         wordright
  339.         markword upper                      * Upper case for visibility
  340.         cursordown                          * Return to starting line
  341.         jump 1
  342.     COMMENT:
  343.         unmarkblock                                                      *:18
  344.         shiftleft begline '*'               * Comment if uncommented
  345.         wordright
  346.         markword lower                      * Lower case for visibility
  347.         cursordown                          * Return to starting line
  348.     jump 1
  349.     * --------- Test if Line is Already a 'Pause', Any Case ---------*
  350.     LAST_TEST:
  351.         begline
  352.         unmarkblock markline
  353.         find "pause" return "WLI"  return   * To find 'pause', any case
  354.     jfalse NOT_pause
  355.         markword
  356.         gotoblockend
  357.         isendline                           * Test if text after 'pause'
  358.     jtrue 1                                 * Don't pause if no text after
  359.     NOT_pause:
  360.     * --------------- Insert PAUSE_*+ and Bypass Lines --------------*
  361.     3:  insertline                          * Insert blank line for 'PAUSE_*+'
  362.     3A: gotocolumn "25" return
  363.         "PAUSE" "*+"                        * Insert PAUSE_*+
  364.         linedown                            * Re-position screen
  365.     1:  cursordown                          * Move down to next line
  366.         findreplace                         * Test if past eob, maintains
  367.         #173 #175 return #173 #175 return   * cursor pos, 'Find' does not*:15
  368.         'N' return
  369.     jtrue LOOP:                             * Loop again until past eob marker
  370.     DELMARK:
  371.         find return 'G' return              * Jump to eob marker
  372.     jfalse END
  373.         delline                             * Remove eob marker
  374.         scrolldown
  375.     END:
  376.         unmarkblock togglewordwrap
  377.         begline
  378. *
  379. * 73 bytes Tue  06-04-1991  02:04:12 (TH)
  380. * 73 bytes Mon  07-08-1991  17:17:12 (TH @4)
  381. * 75 bytes Sun  11-17-1991  21:15:58 (TH @4, move to next line, Insert on)
  382. * 75 bytes Sun  11-17-1991  21:25:10 (TH @4)
  383. * 76 bytes Mon  05-04-1992  17:26:12 (TH @3, added setscreenoff)
  384. * 117 bytes Wed  05-20-1992  10:22:04 (TH @3, handles line above cursor line)
  385. *               (In Amac43.zip)
  386. * 289 bytes Mon  06-08-1992  21:31:32 (TH @3, pause like @1, also unpause)
  387. * 289 bytes Mon  06-08-1992  21:31:32 (TH @3 to ALL #3/859-61)
  388. * 295 bytes Mon  06-15-1992  08:38:18 (TH @3, double end of block markers)
  389. * 302 bytes Mon  06-15-1992  17:33:11 (TH @3, changed colon routine)
  390. * 305 bytes Thu  06-18-1992  23:01:49 (TH @3, misc)
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397. * 
  398. * ----------------------------------------------------------------------
  399. * @(4) Comment or Un-comment all PAUSE*+'s in Block
  400. * ----------------------------------------------------------------------
  401. * This macro has two functions:
  402.  
  403. *     All PAUSE*+ lines in a block that are *not* commented out will be
  404. *     commented out by inserting a preceding asterisk in col 1, and
  405. *     lower cased.
  406.  
  407. *     All PAUSE*+ lines in a block that are commented out will be
  408. *     un-commented by removing the asterisk in col 1, and upper cased.
  409.  
  410. * If no PAUSE*+ lines exist in the block, nothing is changed in the
  411. * macro.  If a line block is not marked before invoking, either open or
  412. * closed, the macro pauses for the user to select the end of block.
  413.  
  414. * This macro is useful for quickly switching states of a macro from
  415. * single step to normal when all lines in the block have not been
  416. * paused with either @1 or @3.
  417.  
  418. @4  macrobegin
  419.     setwordwrapmode togglewordwrap
  420.     setsoundoff setinsmode
  421.     * ----- Mark Line Or Block If Not Marked, Insert Eob Marker -----*
  422.         gotoblockend jtrue OK markline
  423.         gotoblockend jtrue OK
  424.         makectrofscreen
  425.         Pause
  426.         markline
  427.     OK:
  428.         setscreenoff
  429.         addline begline #173 #175           * Insert end of block markers
  430.         lineup                              * Re-position cursor
  431.         gotoblockbeg
  432.     NO_ADDLINE:
  433.         isemptyline
  434.     jtrue 1
  435.     LOOP:
  436.     * ----------- Test if Star is First Character in Line -----------*
  437.         firstnonwhite
  438.         unmarkblock
  439.         * setscreenon setscreenoff          * Add line to see action!    *:18
  440.         markcolumn
  441.         cursorright                         * Move one char rt of first char
  442.         find '*' return "LB" return         * Test if line is commented
  443.     jfalse NO_STAR
  444.         unmarkblock markline
  445.         find "E" "*+" return "IL" return    * If commented, test if paused
  446.     jfalse 1
  447.     * ---------------------- Uncomment PAUSE_*+ ---------------------*
  448.     UNCOMMENT:
  449.         shiftleft shiftright                * Uncomment if paused
  450.         markword upper                      * Upper case it for visibility
  451.         cursordown
  452.     jump 1
  453.     NO_STAR:
  454.     * --------- Test if Line is Already Paused with PAUSE_*+ --------*
  455.         begline
  456.         unmarkblock markline                                             *:18
  457.         find "E" "*+" return "IL" return    * Test if PAUSE_*+
  458.     jfalse 1                                                             *:18
  459.     COMMENT:
  460.         shiftleft begline '*'               * Comment if uncommented
  461.         wordright
  462.         markword lower                      * Lower case for visibility
  463.     * ----------- Re-position, Remove End of Block Markers ----------*
  464.         cursordown                          * Return to starting line
  465.     1:  cursordown                          * Move down to next line
  466.         findreplace                         * Test if past eob, maintains
  467.         #173 #175 return #173 #175 return   * cursor pos, 'Find' does not
  468.         'N' return
  469.     jtrue LOOP:                             * Loop again until past eob marker
  470.     DELMARK:
  471.         find return 'G' return              * Jump to eob marker
  472.     jfalse END
  473.         delline                             * Removwe eob marker
  474.         scrolldown
  475.     END:
  476.         unmarkblock togglewordwrap
  477.         begline
  478. *
  479. * 133 bytes Thu  06-18-1992  23:01:30 (TH @4)
  480.  
  481.  
  482.  
  483. * 
  484. * ----------------------------------------------------------------------
  485. * @(9) Macro @2 Paused With @1, Removes PAUSES "Single Step"
  486. * ----------------------------------------------------------------------
  487. * This macro is macro @2 paused with @1 to show how pause lines are
  488. * inserted.
  489.  
  490. @9 macrobegin
  491. *   setscreenoff setsoundoff
  492.       LOOP:
  493.                         PAUSE*+
  494.           unmarkblock markline    * Markline for Find
  495.                         PAUSE*+
  496.           Find
  497.                         PAUSE*+
  498.               "E" "*+" return     * Search for 'PAUSE_*+'
  499.                         PAUSE*+
  500.               "IL" return         * Finish prompt
  501.       jfalse NOPAUSE              * If not found, go to NOPAUSE
  502.                         PAUSE*+
  503.           delline                 *ELSE if found, delete pause line
  504.                         PAUSE*+
  505.           begline                 * Re-position for Find in current line
  506.       jump LOOP                   * Loop again
  507.       NOPAUSE:
  508.                         PAUSE*+
  509.           endline begline         * Test if line has text
  510.       jfalse DELLINE              * If blank, delete line and end macro
  511.                         PAUSE*+
  512.           cursordown              * Cursor down to next line
  513.       jfalse END                  * If false, at eof, end macro
  514.                         PAUSE*+
  515.       jump LOOP                   * Loop again 'til blank
  516.       DELLINE:
  517.                         PAUSE*+
  518.           delline                 * Delete blank line
  519.       END:
  520.                         PAUSE*+
  521.           unmarkblock
  522.  
  523. *
  524. * 36 bytes Tue  06-04-1991  00:26:13 (TH)
  525. * 44 bytes Tue  06-04-1991  10:14:23 (TH |)
  526. * 45 bytes Mon  07-08-1991  17:16:43 (TH @2)
  527. * 46 bytes Tue  11-12-1991  15:10:11 (TH @2, use v2.15)
  528. * 45 bytes Tue  11-12-1991  15:26:16 (TH @2, w/o v2.15, #3/776)
  529. * 46 bytes Mon  05-04-1992  17:26:42 (TH @2, added setscreenoff *|)
  530. *--
  531. * 42 bytes Fri  05-31-1991  22:13:40 (TH)
  532. * 42 bytes Mon  07-08-1991  17:16:52 (TH @3)
  533. * 61 bytes Tue  11-12-1991  15:21:38 (TH @3)
  534. * 58 bytes Tue  05-19-1992  23:16:52 (TH @9, actual, no change)
  535. * 52 bytes Mon  06-15-1992  18:12:25 (TH @9, updated with latest @2)
  536.  
  537. * (Version) History
  538. * ------------------
  539. *   1.0  -  Initial release.                                           7/10/91
  540. *   1.1  -  Modified @1 for Insert On or Off.                           8/9/91
  541. *   1.2  -  Modified @1 for labels succeeding conditional statements  11/12/91
  542. *           w/ or w/o colon following label.  Updated @3.
  543. *        -  Modified @1 for QEdit v2.15.  Added reference to mis005.  11/14/91
  544. *        -  Modified @3 and @4.                                       11/17/91
  545. *        -  Sent #3/776.                                              11/21/91
  546. *   1.3  -  Corrected @1 for qconfig set to insert lines below cursor.  1/9/92
  547. *        -  Modified @1 to handle conditional statements correctly.    2/13/92
  548. *        -  In AMAC42.ZIP.                                             3/28/92
  549. *   1.4  -  Added setscreenoff to @2 and @4.                            5/4/92
  550. *        -  Shortened @1.                                              5/20/92
  551. *        -  Changed @3 to @9, @4 to @3.                                5/20/92
  552. *                 (In Amac43.zip.)
  553. *   1.5  -  Modified @1 to not pause case insensitive 'pause'.         5/29/92
  554. *        -  Added setsoundoff to @2/3.                                  6/4/92
  555. *        -  Modified @3 to be more versatile - pause and unpause.       6/4/92
  556. *        -  Added @4.                                                  6/15/92
  557. *        -  Changed eob markers in @3 and @4.                          6/15/92
  558. *        -  Changed colon routine in @1 and @3.                        6/15/92
  559. *        -  Updated @9 with latest version of @2.                      6/15/92
  560. *
  561. *
  562. *
  563. *
  564. *
  565. *
  566. * eof
  567.